Current prior art copy protection systems often check hardware components of a computer on which an executable file is to be executed to identify whether the executable file has actually been activated for that computer. During an exemplary activation process, hardware information of the computer for which the executable file is to be activated (also called client in the present context) is sent to an activation server. The activation server returns to the client a license that embeds the hardware information in any form (e.g., encrypted).
The license can be validated, for example upon start of the executable file, and hardware information of the currently used client is compared to the information stored in the license file. The hardware information check has usually a true/false condition, and if the hardware information does not match, a new activation of the executable file for the particular client is required.
As an example of a prior art protection system, the following syntax may be used to attain a hardware binding implementation:
1) if(!isHardwareBindingValid( ))
2) condition (eg. TerminateProcess)
That is, the prior art suggests an approach in which a comparison of the hardware information of the currently used client and the information stored in a license file or something similar is performed. However, this check might be circumvented by tampering with hardware verification code, e.g., using so-called “patching”.
Still further, a hardware binding may bind software to a specific client using a specific license. Usually, an activation server may provide such a license to the software end-user. A component called Digital Rights Management (DRM) ensures that the activation server only provides licenses to end-users who have paid for the software. This component could also be called authorization component.
One possible DRM implementation would be that the end-user has to enter, e.g., a serial number that he or she received upon payment in order to be able to activate the software. Another possibility is an account that the end-user has used to pay for the software.